// components/map/map.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    currentLo: null,
    currentLa: null,
    newCurrentLo: null,
    newCurrentLa: null,
    distance: 0,
    duration: 0,
    markers: [],
    searchvalue: null,
    show: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getAddress();
  },
  /**
   * 在地图中添加标点
   */
  addMarker(e) {
    // 新的marker坐标
    const newMarker = {
      id: Date.now(),
      latitude: e.detail.latitude,
      longitude: e.detail.longitude,
      name: e.detail.name,
      width: 30,
      height: 40
    };
    // 更新markers数组

    this.setData({
      markers: [ ...this.data.markers, newMarker ],
      show: true
    });
    const newMarkerinfo = this.data.markers[this.data.markers.length-1];
    console.log(newMarkerinfo);
    this.setData({
      newMarkerinfo: newMarkerinfo,
      currentLo: e.detail.longitude,
      currentLa: e.detail.latitude
    });
  },
  /**开始导航 */
  startMap() {
    wx.openLocation({
      latitude: this.data.currentLa,
      longitude: this.data.currentLo,
      success(res) {
        console.log('success!!!', res);
      },
      fail(err) {
        console.log('error', err);
      }
    })
  },
  //view搜索框
  viewChoose() {
    var _this = this;
    wx.chooseLocation({
      success(res) {
        console.log(res);
        const { latitude,longitude,name } = res;
        _this.addMarker({
          detail: { latitude,longitude,name }
        })
      },
      fail(err) {
        console.log('error', err);
      },
      complete: () => {
        console.log('位置获取操作已完成');
      }
    });
  },
  onClose() {
    this.setData({ show: false });
  },
  //获取地址
  getAddress(e) {
    var _this = this;
    //getCurrentPages()判断是否是上一个页面跳转过来的，如果是返回地址给上一页面
    console.log("ssdcayhbiucsdhabj",getCurrentPages());
    const currentPages = getCurrentPages()
    const page = currentPages[currentPages.length - 2]
    if (getCurrentPages().length > 2) {
      //如果是其他界面跳转过来的则选择地址
      wx.chooseLocation({
        success(res) {
          console.log(res);
          wx.navigateTo({
            url: '/' + page.route + '?addr=' + res.address + '&latitude=' + res.latitude + '&longitude=' + res.longitude + '&name=' + res.name
          })
          // var markers = _this.data.markers;
          // markers.push({
          //   id: 0,
          //   longitude: res.longitude,
          //   latitude: res.latitude,
          //   title: res.address,
          //   width: 30,
          //   height: 40
          // });
          // var points = _this.data.includePoints;
          // points.push({
          //   longitude: res.longitude,
          //   latitude: res.latitude
          // });
          // _this.setData({
          //   newCurrentLo: res.longitude,
          //   newCurrentLa: res.latitude,
          //   // includePoints: points,
          //   markers: markers,
          // });
          // _this.getPolyline(_this.data.statusType);
        },
        fail(err) {
          console.log('error', err);
        },
        complete: () => {
          console.log('位置选择操作已完成');
        }
      });
    } else {
      //否则获取现在的位置
      wx.getLocation({
        type: 'gcj02',
        success: function (res) {
          var latitude = res.latitude;
          var longitude = res.longitude;
          var markers = _this.data.markers;
          markers.push({
            id: 0,
            longitude: longitude,
            latitude: latitude,
            width: 30,
            height: 40
          });
          _this.setData({
            currentLa: latitude,
            currentLo: longitude,
            markers: markers,
          });
        },
        fail: (err) => {
          console.error('获取位置失败:', err);
        },
        complete: () => {
          console.log('位置获取操作已完成');
        }
      })
    }
  },
  drawPolyline(self, color) {
    return {
      origin: this.data.currentLo + ',' + this.data.currentLa,
      destination: this.data.newCurrentLo + ',' + this.data.newCurrentLa,
      success(data) {
        var points = [];
        if (data.paths && data.paths[0] && data.paths[0].steps) {
          var steps = data.paths[0].steps;
          for (var i = 0; i < steps.length; i++) {
            var poLen = steps[i].polyline.split(';');
            for (var j = 0; j < poLen.length; j++) {
              points.push({
                longitude: parseFloat(poLen[j].split(',')[0]),
                latitude: parseFloat(poLen[j].split(',')[1])
              })
            }
          }
        }
        self.setData({
          distance: data.paths[0].distance,
          duration: parseInt(data.paths[0].duration / 60),
          polyline: [{
            points: points,
            color: color,
            width: 6,
            arrowLine: true
          }]
        });
      }
    }
  },
  getPolyline(_type) {
    var self = this;
    switch (_type) {
      case 'car':
        amap.getDrivingRoute(this.drawPolyline(this, "#0091ff"));
        break;
      case 'walk':
        amap.getWalkingRoute(this.drawPolyline(this, "#1afa29"));
        break;
      case 'ride':
        amap.getRidingRoute(this.drawPolyline(this, "#1296db"));
        break;
      default:
        return false;
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})